Process control

ABSTRACT

A system for communicating according to a standard communication protocol for process control includes a plurality of interconnected computers. The system includes a module that permits communication of information between computers that communicate with process control equipment. The system also includes a module that permits a primary controlling machine to communicate with computers that communicate with process control equipment, and that permits a secondary controlling machine to take the place of the primary controlling machine when the primary controlling machine is unavailable. The system further includes a module that aggregates requests for information directed to one computer that communicates with a piece of process control equipment, communicates with the computer and obtains the information, and delivers the information to each of the requesters. The standard communication protocol for process control can be OPC, and the communicated information can be one or more process control parameters.

CROSS-REFERENCE TO RELATED APPLICATION

This is based on and claims priority to and the benefit of U.S.Provisional Patent Application Ser. No. 60/104,485, filed Oct. 16, 1998,the entirety of which application is hereby incorporated herein byreference.

TECHNICAL FIELD

The invention relates to communication between computers in a network,and in particular to communication between computers that arecommunicating according to a communication standard for process control.

BACKGROUND INFORMATION

It is possible to communicate by computer using communication technologysuch as electronic mail (e-mail). Communication between and amongcomputers using any of a variety of protocols over the Internet, localarea networks (“LANs”), and wide area networks (“WANs”) also is known.Such communication can be interrupted or severely compromised when anintermediary, such as a server computer, becomes unavailable.

Manufacturing machines and other types of industrial equipment can beinterconnected and controlled to form an automated manufacturing system.It is known to hard-wire different types of equipment together to formsuch a system, using custom cabling. The use of such dedicated customcabling makes it difficult, time consuming, and expensive to addadditional machines or equipment to the system, or to replacemachines/equipment with different or improved machines/equipment or withmachines/equipment made by different manufacturers. Another solutionthat has been applied to this problem is the writing of custom computercode to allow the conversion of information or instructions residing onone manufacturer's equipment, such as a Programmable Logic Controller(“PLC”), to be communicated to another PLC made by a differentmanufacturer.

SUMMARY OF THE INVENTION

The invention relates generally to controlling processes, which caninclude controlling equipment (such as valves and gauges) in anautomated factory or process line, and the control of other processes oractivities, including the operation of power plants, water treatmentfacilities, and heating, air conditioning and ventilation (“HVAC”)systems. The invention can be used in activities that involve theinteractions of humans with control processes and systems, for example,in nursing homes, in amusement park rides, and even in prisons. Theinvention can also be used to conduct operations in a discretemanufacturing environment, where data or events result in the generationand use of digital signals.

Some manufacturers of process control equipment also sell or provide acomputer (and/or software) that controls the equipment and/or monitorsthe equipment. Two such manufacturers are Allen-Bradley and Siemens. Theinvention can be used to connect such controlling computers (e.g., OPCservers, where OPC stands for Object Linking and Embedding for ProcessControl). For example, an Allen-Bradley OPC server can be made tointeroperate with a Siemens OPC server, such that they can share dataeasily and seamlessly and thereby control/monitor the various equipmentconnected to the two different servers. The invention also can be usedto allow multilevel OPC data redundancy. When there is a primary and oneor more secondary or backup OPC servers, the invention allows automaticswitching to one of the backup servers if the primary server becomesunavailable. Still another use of the invention is in allowingaggregation of requests directed to a particular piece of processcontrol equipment, and thereby increasing the efficiency of the processby obtaining information once based on those aggregated requests, andthen supplying copies of that information to all of the requesters. Asan example, in a manufacturing process, multiple pieces of equipmentmight require the value of a process control parameter such as the rateof production of a certain part at a particular workstation, or thevolume of some reagent held in a tank in a chemical process. Rather thanburdening the process control equipment that controls the process thatyields the parameter of interest with multiple requests for the samedata, the information is requested once, and the information obtained isthen supplied to each of the requesting computers, allowing the processcontrol equipment to perform more efficiently.

In one aspect, the invention relates to a computer program recorded on acomputer-readable medium. The computer program comprises a module thatpermits the communication of information according to a standardcommunication protocol for process control between a first computer anda second computer. The first computer is in communication with a firstpiece of process control equipment. The second computer is incommunication with a second piece of process control equipment.

In one embodiment, the standard communication protocol for processcontrol is OLE (“Object Linking and Embedding”) for Process Control(“OPC”). The OPC protocol has been defined by the OPC Foundation. OPC isdesigned for use by programmers in building programs and systems thatallow communication in a Distributed Component Object Model (“DCOM”)system, such as a network of computers, in which component objects canreside on different computers. Other standardized communicationprotocols for process control could be used as the communicationprotocol in other embodiments of the invention. The information that iscommunicated according to the protocol can be a process controlparameter.

In another aspect, the invention relates to a computer program recordedon a computer-readable medium. The computer program comprises a modulethat permits a primary controlling machine to communicate according to astandard communication protocol for process control with a firstcomputer and a second computer. The module also permits a secondarycontrolling machine to communicate according to the standardcommunication protocol for process control with the first and secondcomputers in place of the primary controlling machine. The first andsecond computers are in communication with first and second pieces ofprocess control equipment, respectively.

In one embodiment, the secondary controlling machine automaticallycommunicates with the first and second computers in place of the primarycontrolling machine when the primary controlling machine becomesunavailable.

In another aspect, the invention relates to a computer program recordedon a computer-readable medium. The computer program comprises a modulethat aggregates all requests for information directed to one of aplurality of interconnected computers in a process control environment,such as a factory. The module identifies each of the requestingcomputers, and delivers (according to the standard communicationprotocol for process control) the information to each of the requestingcomputers. At least the computer to which the requests are directed isin communication with at least one piece of process control equipment,and the requests are transmitted according to the standard communicationprotocol for process control by one or more of the other interconnectedcomputers. After the requests are aggregated, the module communicateswith the target computer (using the standard communication protocol forprocess control) and obtains the information.

In another aspect, the invention relates to a computer program thatcombines the functionality of the three modules described above.

In another aspect, the invention relates to a networked computerizedcommunication and control system. The system includes a primarycontrolling machine and a plurality of computers. Each of the computersis connected via the network to the primary controlling machine, and atleast some of the computers communicate with at least one of piece ofprocess control equipment. The system also includes three modules thatare able to perform the functionality of the three modules describedabove.

In another aspect, the invention relates to communication between/amongand control of equipment connected via a computerized communication andcontrol network. Each of a plurality of computers is connected via thenetwork to a controlling machine. At least some of the computerscommunicate with at least one piece of process control equipment. Thefirst, second and third modules described above can be operated tocommunicate information (according to the standard communicationprotocol for process control) between the computers that arecommunicating with pieces of process control equipment so as to controla process.

The foregoing and other objects, aspects, features, and advantages ofthe invention will become more apparent from the following descriptionand from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, like reference characters generally refer to the sameparts throughout the different views. Also, the drawings are notnecessarily to scale, emphasis instead generally being based uponillustrating the principles of the invention.

FIG. 1 depicts an embodiment of a server-to-server bridging capability,according to the invention.

FIG. 2A depicts an embodiment of a system having the redundancycapability, according to the invention, with the primary controllingmachine, or primary OPC server, shown online.

FIG. 2B depicts an embodiment of the system of FIG. 2A, with the primarycontrolling machine shown offline.

FIG. 3 depicts an example of a system having aggregation capability,according to the invention.

FIG. 4 depicts an embodiment of a first view of a user screen accordingto the invention.

FIG. 5 depicts an embodiment of another view of a user screen accordingto the invention.

FIG. 6 depicts an embodiment of another view of a user screen accordingto the invention.

FIG. 7 depicts an embodiment of another view of a user screen accordingto the invention.

FIG. 8 depicts an embodiment of a view of a statistics window accordingto the invention.

FIG. 9 depicts an example of the configuration of a data bridgingapplication according to the invention, in which properties of aregister are defined.

FIG. 10 depicts an example of the configuration of input parameters in adata bridging application, according to the invention.

FIG. 11 depicts an example of the configuration of a data bridgingapplication according to the invention, in which an output is beingselected and configured.

FIG. 12 depicts an embodiment of the present invention, in which a listof tags may be examined.

FIG. 13 depicts an embodiment of the present invention, in which a listof registers may be examined.

FIG. 14 depicts an example of the configuration of a redundancyapplication according to the invention, in which a primary controllingmachine and a plurality of secondary controlling machines are beingenumerated.

FIG. 15 depicts an embodiment of the present invention in whichcomputers are selected as primary controlling machine and as one or moresecondary controlling machines.

FIG. 16 depicts an embodiment of the present invention in whichcomputers are identified as servers.

FIG. 17 depicts an embodiment of the present invention in which OPCsettings may be selected.

FIG. 18 depicts an embodiment of the present invention in which optionalfeatures are selected.

FIG. 19 depicts an embodiment in which the value of an alias is changed,according to the invention.

FIG. 20 depicts an embodiment in which a new alias is created, accordingto the invention.

FIG. 21 depicts an embodiment in which an alias is edited, according tothe invention.

FIG. 22 depicts an embodiment of the screen that provides informationabout the system during its operation, according to the invention.

DESCRIPTION

This invention relates generally to communication between two or moreOPC (i.e., “Object Linking and Embedding” for Process Control) servers.The invention provides the capabilities of creating data bridges betweentwo or more computers, of aggregating requests from one or morecomputers that are directed to obtaining information from one computer,and of providing redundancy in the control of the communications betweenthe computers. An embodiment of the invention is available from ICONICS,Inc., located at 100 Foxborough Road, Foxborough, Mass. 02035, as asoftware program and package called DataWorX32 that is designed tooperate with a variety of operating systems, including Windows 95,Windows 98, Windows NT 4.0, Windows NT 5.0, Windows 2000 and Windows CE.This software program can be, and is, supplied on a computer-readablemedium such as a CD-ROM. A program recorded on a computer-readablemedium includes not only the program on a CD-ROM but also the programrecorded on other computer-readable media such as floppy disks, harddrives, magnetic tape, other storage media such as RAM, ROMs, PROMs,EPROMs and the like, and any other physical storage medium that may beused to permanently record a program, as well as a copy of the programthat may be downloaded or transferred from the active memory of onecomputer to a second computer. While DataWorX32 is software that isdesigned to execute in general purpose computers, its functionalitycould be achieved in specialized hardware or in another combination ofhardware and software. The invention will be described with reference tothe functionality provided by DataWorX32.

The embodiments and examples that are used to explain the features ofthe invention are a few of many embodiments and examples that can begiven. It is common in the software industry to periodically upgradesoftware. The software “look and feel” may change over time, which isoften done to improve the ease of use of the program, and to make itsfeatures more readily accessible to less experienced computer users. Forexample, some users may be comfortable using menus and other text basedcontrols and entering information by typing, while other users mayprefer to use a graphical user interface that includes icons and a toolbar and entering information by pointing with a mouse and clicking amouse button to obtain the same functionality.

Without the capabilities provided by the invention, a computer programthat accesses input and output signals may obtain information, but thisinformation will in general be available only in a single application.With the capabilities provided by the invention, information that isobtained by one application residing on one computer can be madeavailable both to other applications on that computer and to othercomputers in the network, as an OPC data point that is available to theentire network. This is true whether the other computers are made by thesame manufacturer or not, whether the other computers have the same kindof CPU or not, and whether the other computers are running the sameoperating system or not. In the present invention, a Register is adatum, or its location in memory somewhere in the system. If theRegister is defined with no input and no output, it is simply a storageregister for a global variable with the ability to be read on demand,and written on demand by any computer in the network. An Alias is aplaceholder, or a variable whose name can be substituted at a latertime. An Alias is used to allow redirection of the reading or writing ofinformation to any location within the network. A Tag is a pointer to aRegister, or to a Register on a particular computer or server in thenetwork.

Referring to FIG. 1, in connection with server-to-server data bridgingfunctionality according to the invention, a plurality of computers 102,104, 106, 108 are interconnected. The computers 102, 104, 106, 108 canbe on a computer network 100, and they can communicate over the network100. The computers 102, 104, 106, 108 can be personal computers orworkstations, or generally any other type of computing device such asminicomputers, mainframe computers, embedded computers, or other generalpurpose computers. In the embodiment shown, the computers have monitorsand keyboards, but it should be understood that the computers could haveadditional or different input and output devices, such as keypads, touchscreens, printers, plotters, scanners, modems, and the like, or they canhave fewer input and output devices attached, as may be appropriate fora process control system. Each of the computers 102, 104, 106, 108 canrun any of a variety of operating systems, such as the Windows systemsmentioned above, or systems such as Unix or Linux, and each generallyincludes all of the basic internal components of a general purposecomputer such as a microprocessor, one or more buses, one or morecontrollers, memory (such as RAM and ROM of any of many conventionaltypes), input and output devices, recording systems such as hard disks,floppy disks or magnetic tape, and the like. One computer 102 isidentified as “OPC Server A.” This computer 102 also has a connection toa first piece of process control equipment 110, to which it can sendinstructions and from which it can obtain information. The computer 102and the first piece of process control equipment 110 can communicate bythe exchange of electrical signals that correspond to instructionsdefined by the manufacturer of the process control equipment 110. Insome cases these instructions are proprietary, and in some casesmanufacturers have agreed to some standard set of instructions. Anexample of a first piece of process control equipment can be a sensingdevice that counts or examines a first type of part (such as a wheel)that passes through a workstation. Another example of the processcontrol equipment is a mass flow controller that both measures andcontrols the flow of a fluid in a chemical process. Another computer 106is identified as “OPC Server B.” This other computer 106 has aconnection to a second piece of process control equipment 112, to whichit can send instructions and from which it can obtain information. Thecomputer 106 and the second piece of process control equipment 112 canalso exchange instructions and information as electrical signals. Anexample of a second piece of process control equipment can be a sensingdevice that counts a second type of part (such as a chassis to whichfour wheels are attached). Another example of the process controlequipment is a power controller that controls the temperature of achemical reactor. The second controller can request information from thefirst in order to maintain its process control parameters at the levelsneeded to keep the process running correctly.

In general, at the present time, direct exchanges of instructions andinformation are not possible between process control equipment made bydifferent manufacturers. In fact, in some cases, the exchange ofinstructions and information may not be possible even between equipmentmade by the same manufacturer. In the present embodiment, if informationcreated at the first process control equipment 110 needs to becommunicated to the second piece of process control equipment 112,computer 102 can obtain the information from the first piece of processcontrol equipment 110 and can transmit that information via the OPCcommunication protocol to another computer 104 that is in the network,and that is running the appropriate software according to the invention.A commercial embodiment of the software is known as DataWorx32, asindicated above. The computer 104 can then transmit the receivedinformation, using the OPC communication protocol, from itself to thecomputer 106 that communicates with the second piece of process controlequipment 112. Finally the computer 106 can communicate the informationto the second piece of process control equipment 112, using either aproprietary communication protocol or a standard communication protocol.Additional computers, such as the computer 108, that is a “client” thatis connected to the network, but that is not involved in the specificcommunication under discussion, may be part of the network, and may atother times be involved in other communications according to theinvention.

For the communication just described, the computer 104 upon which theDataWorX32 program is operating views as input the data transmitted toit by the computer 102, and views as output the information it send tothe computer 106. The computers 102, 104, 106, 108 can be made bydifferent manufacturers, can be of different types, and can operateunder different operating systems, so long as they all communicateaccording to a standard communication protocol for process control,which in this embodiment is OPC. In order for a computer to communicateunder the OPC protocol, it must have an OPC-compliant interfaceavailable in its operating system. Under the Windows operating systems,for example, an OPC-compliant Dynamic Link Library (“DLL”) file issufficient to communicate in an OPC system.

In an equivalent manner, data that the second piece of process controlequipment 112 requires about the first piece of process controlequipment 110 can be provided to the process control equipment 112. Toaccomplish this communication, the user sets up DataWorX32 to takeinformation out of 110 (on a polling basis, e.g., every 50 ms) and thento send it to 112. The information is supplied when it represents asignificant change in the parameter of interest. A request can behandled between the piece of process control equipment 112 and thecomputer 106 in the proprietary language of the equipment 112, and cansignal, for example, that an error condition has occurred. Such arequest will traverse the computer network via computers 106, 104 and102, once again in the format defined by the standard communicationprotocol for process control. At the other end, the request can behandled between the piece of process control equipment 110 and thecomputer 102 in the proprietary language of the equipment 110. Theinformation will flow along the same path, but in the oppositedirection. In another embodiment, there can be multiple instances of theDataWorX32 program each running on a different computer.

The information that is transferred between a piece of process controlequipment and a computer, or between two computers, may be anything thatcan be represented by electrical signals, and may include processcontrol parameters as a subset. In general, a process control parameteris a datum (e.g., time, date, temperature, pressure, volume, mass, unitsof measure, rate of change, measured or computed quantity, alphanumericstring, symbol, etc.), a status of equipment, a status of a process, anidentifier of equipment, an identifier of a process, an identifier of aprocessing batch, a mathematical or logical relationship, and the like.

FIG. 2A depicts an embodiment of the redundancy capability according tothe invention. In FIG. 2A a primary controlling machine, or primary OPCserver 202, is online. In this embodiment, primary controlling machine202 has a communication link to a programmable logic controller (“PLC”)212 that controls the steps of a process in a piece of process equipment(not shown). The primary controlling machine 202 can be one of thecomputers in the network that perform process control functions, inaddition to its operation as the primary controlling machine 202 of thesystem. The primary controlling machine 202 can communicate with the PLC212 in either or both of the proprietary language of the PLC 212 or in astandard communication protocol for process control if the PLC 212 is soequipped. In this embodiment, the primary controlling machine 202 isadditionally in communication with a plurality of computers 206, 208 and210. Each of the computers 206, 208 and 210 is capable of controllingone or more pieces of process control equipment (not shown) in a mannerlike that of computers 102 and 106 of FIG. 1. The computers 206, 208 and210 are connected by a communications network, and can communicate usinga standard communication protocol for process control. In thisembodiment, the DataWorX32 program is operating on one of the computersin the network and monitors the activity of the primary controllingmachine 202.

In the present embodiment, a redundant OPC server, the secondarycontrolling machine, or the secondary OPC server 204 is present. Thisredundant secondary controlling machine 204 has connections thatduplicate those of the primary controlling machine 202. In thisinstance, since primary controlling machine 202 has connections to a PLC212 that controls some portion of a process, there is provided aredundant PLC 214 that has redundant connections to the portion of theprocess that PLC 212 controls. If primary controlling machine 202becomes unavailable, as for example due to an internal malfunction, acommunication link failure, or the like that degrades the ability ofprimary controlling machine 202 to perform its duties, secondarycontrolling machine 204 will have access to all of the facilities thatare needed to take the place of primary controlling machine 202, at boththe overall system control level and at the level of an individualcomputer that controls one or more process variables or steps, forexample, controlling a PLC needed to run the process control functionsthat primary controlling machine 202 is intended to perform. TheDataWorX32 program that embodies the present invention can be configuredto cause secondary controlling machine 204 to take over the functions ofprimary controlling machine 202 upon the unavailability of primarycontrolling machine 202.

FIG. 2B further depicts an embodiment of the redundancy capabilityaccording to the invention. In FIG. 2B, the primary controlling machine202, or primary OPC server, is offline. The primary controlling machine202 can be offline for any one of a variety of reasons, such as beingdeliberately taken out of service for maintenance, or being unavailablebecause of a malfunction. In the situation where primary controllingmachine 202 is unavailable, the invention as embodied in the DataWorX32program can automatically pass control of the communication between thecomputers 206, 208 and 210 themselves as well as communication betweenany of the computers 206, 208 and 210 and a controller to secondarycontrolling machine 204. The secondary controlling machine 204 takesover all of the functions and capabilities that the primary controllingmachine 202 was carrying out before it became unavailable. As describedabove, in the embodiment shown secondary controlling machine 204 isconnected to a PLC 214 that takes the place of the PLC 212 that theprimary controlling machine 202 uses to control a process. Thereplacement of primary controlling machine 202 with secondarycontrolling machine 204 occurs automatically and transparently as viewedby any of the computers 206, 208 and 210.

While only one secondary controlling machine 204 is depicted in FIGS. 2Aand 2B, the present invention provides for a multiple number ofsecondary controlling machines to be identified, with control passing toeach such secondary controlling machine according to a sequence that isconfigured by an operator. That is, if the system includes threesecondary controlling machines, which will be denoted secondarycontrolling machines A, B and C for discussion, an operator can assign apriority order, such as machine B first, machine C second, and machine Athird. In the event that the primary controlling machine 202 of thisconfiguration becomes unavailable, the system will first look tosecondary controlling machine B to take the place of the primarycontrolling machine 202, and then look to secondary controlling machineC to take the place of the primary controlling machine 202 only ifsecondary controlling machine B is unavailable. In such a configuration,secondary controlling machine A would replace primary controllingmachine 202 only if both machines B and C were unavailable.

FIG. 3 depicts an example of the aggregation capability according to theinvention. FIG. 3 shows a network 300 that comprises three computers302, 304 and 306. For the purpose of explanation of the aggregationcapability of according to the invention, it is irrelevant whether anyof computers 320, 304 or 306 is a primary controlling machine. It isalso unimportant where in the network there is a computer upon which theDataWorX32 program that embodies a part of the invention is operating.For the purposes of discussion, the DataWorX32 program is depicted asoperating within the network, as shown in box 310. The computer 304 isconnected to a process machine 314, labeled machine #1. The computer 306is connected to another process machine 316, labeled machine #2.Depending on what it does, machine #2 can generate one or more processcontrol parameters, such as the number of units of product that itprocesses, the amount of material that flows through it, a temperature,a pressure, a time, or the like. If the value of some process controlparameter is needed by computer 304, for example to control or tooperate the machine 314 that it controls, and if the same processcontrol parameter is needed by the computer 302 for its operation, forexample to control the inventory or work-in-process, it is possible thatboth computer 302 and computer 304 will request the same informationfrom computer 306.

In FIG. 3, a request by computer 302 is shown as the arrow 322connecting computer 302 and the DataWorX32 program, and a request bycomputer 304 is shown as the arrow 324 connecting computer 304 and theDataWorX32 program. In the circumstance where many requests for the sameinformation are sent to a computer at different times, the overhead thatthe computer experiences in responding to the multiple requests for thesame information can be costly. By using the system and the softwarethat embody the invention, this overhead is rendered unnecessary.According to the present invention, the DataWorX32 program aggregatesthe requests from the computers 302 and 304 and makes a single requestof computer 306 for the desired information. This single request isshown by the arrow 326. Computer 306 responds once with the requestedinformation, which commonly will be transmitted in the oppositedirection along the path that the request followed. The programidentifies which of the computers in the network have requested theinformation, for example by maintaining a list of the requests as theyare received, and transmits to each of the requesting computers a copyof the information that it obtained from the computer 306. While thisembodiment shows only two requests, one from each of two computers, itcan be understood that there can be multiple requests from numerouscomputers that aggregate to a single request for a specific datum fromone computer, which datum is then disseminated to all of the requestingcomputers. For example, in a process that involves fluids in tanks,there may be multiple computers that request a fluid level from onecomputer that communicates with a holding tank and its process controlsthat operate the valving system and measure the fluid depth. In such asystem, DataWorX32 may act as a “middle-man” between the requestingcomputers and the one computer that communicates with the holding tankprocess controls. DataWorX32 may obtain from the one computer thedesired value of fluid depth, and can then send copies of theinformation to each computer that requested it, thereby reducing theoverhead on the computer that communicates with the tank and its processcontrol equipment.

FIGS. 1-3 and the preceding text present a description of the featuresof the invention. FIGS. 4-22 show, and the following text describes, theoperation of an embodiment of the invention (namely, the softwareembodiment known as DataWorX32) in greater detail.

FIG. 4 depicts an embodiment of a first view of a user screen accordingto the invention. A user screen shows a user a status of some aspect ofa program, one or more options that might be chosen, or otherwiseinforms the user of events or actions that have occurred or that may beselected. In the DataWorX32 user screen 400 depicted, the user has anoverview of the status of a program, DataWorX32, and of the actions thatthe user may take. At the top of the DataWorX32 user screen 400 is amenubar 402 that provides a text-based control system for user actions.Immediately below the menubar 402 is a toolbar 404, that provides agraphical user interface that includes equivalent controls to thosefound in the menubar 402. The user can also activate many of the dialogboxes that are described below by clicking the right button of a mousepointing device when an item of interest is highlighted. For example,highlighting a Tag and clicking on the right mouse button activates theOPC Tag Browser, which is discussed below and which is depicted in FIG.12.

The remainder of the DataWorX32 user screen 400 is split into twowindows, a top pane 406 and an output window 408. The top pane 406 candisplay information about registers, aliases, current values, andstatistics, as will be explained below. At the bottom of the top pane406 is a scroll bar 407 that can be employed to observe information thatextends laterally across the top pane 406. The output window 408displays the status of the program DataWorX32. At the bottom of theoutput window 408 is a status bar 409 that enunciates the status of theDataWorX32 program (here, it is stopped), and the date and the time forthe convenience of the user. The toolbar 404, the output window 408 andthe status bar 409 each can be toggled to appear or to be hidden fromview.

FIG. 5 depicts an embodiment of another view of a user screen accordingto the invention. In FIG. 5, the DataWorX32 user screen 400 is shownwith the output window 408 hidden. In FIG. 5, the All Registers item ofthe heading Registers on the menubar 402 has been selected. Registersare used to define variables that can then be made available to all OPCclients. A register can correspond to an OPC data point, which may ormay not be a global variable. A register may be given values via OPC, bythe use of mathematical or logical expressions and constants, or by anapplication program. The DataWorX32 user screen 400 displays a list ofregisters with information about the register name, the type of registerthat the name represents, what inputs if any provide information to theregister, what outputs the register supplies information to, and a scanrate in milliseconds for each register that is set for scanning. Thetype of register is either a register or a status flag that declares aprimary or secondary status to a controlling machine. The inputs andoutputs are the names of registers or OPC tags that are connected to theregister in question as inputs or outputs. A scan rate can only bedefined for a register that has an OPC tag connected to its input, andthe rate is the repeat period in milliseconds that the input of theregister is polled.

FIG. 6 depicts an embodiment of another view of a user screen accordingto the invention. In FIG. 6 the Aliases item of the heading View of themenubar 402 has been selected. In FIG. 6 DataWorX32 user screen 400 isdisplaying a list of aliases. Aliases can be considered as shorthand fora register or for a value, and can be used as variables in expressions.An alias can be thought of as a “placeholder” or “indirect addresse” fora tag, a register, a value, or a variable. An alias is expanded or“resolved” into a string known as an “alias value” when it is used. Analias must first be defined before it can be requested by an item thatcontains it. Simply reassigning the alias to a different register orvalue can change an expression that contains an alias. By the use of analias, it is possible to redirect or reassign a data transmission to orfrom any location within the network. Multiple aliases simultaneouslycan relate to the same register or value, but a single alias can onlyrelate to one register or value at any time. As FIG. 6 depicts, an aliaslist includes an alias name, a default value to which the alias willinitially be set, whether the alias can be accessed by and is availableto OPC compliant devices, and whether the alias is read-only or may alsobe written to, thereby changing its value.

FIG. 7 depicts an embodiment of yet another view of a user screenaccording to the invention. In FIG. 7, the Monitor item under theheading View on the menubar 402 in DataWorX32 user screen 400 has beenselected. In FIG. 7, there is shown a list of the current values ofthree types of variables, Registers, Aliases, and Controlling Machines.For example, a register named RI has a current value of zero, and has aninput and at least one output that is expressed as an equation wherein avariable x is given a value based on an OPC tag. There is also shown analias named ALIAS 1 that takes the current value of an expression kokos,which is a register or an expression. ALIAS 1 has no inputs or outputs.A Controlling Machine named MB2 is depicted as having a type given as aRedundant server whose value is expressed by a location in the system,and which has no input and no output. A register named Ramp1 has acurrent value of zero, an input given by an equation wherein a variablex is given a value based on an OPC tag. Ramp 1 has at least one output,also given by an OPC tag. Lastly, another redundant Controlling Machineis enumerated, by the name of MODBUS, and which has no inputs oroutputs.

FIG. 8 depicts an embodiment of a view of a statistics window accordingto the invention. In FIG. 8, the item Statistics that appears under theheading View of menubar 402 of DataWorX32 user screen 400 has beenselected. OLExpress Statistics screen 500 is shown in FIG. 8, wherein aleft pane lists a tree structure that contains the listings of all theOPC servers that the system recognizes, starting from a root directoryof OPC servers, and progressing to a subdirectory namedICONICS.ModbusOPCServer that contains two listings, SCAN_(—)50 andINACTIVE. In the right pane, the contents of the root directory, whichis the entry that is highlighted in the left pane, is displayed. Theright pane shows the name of the entry, the date and time that itstarted, its status (i.e., running or stopped), the Vendor, and theversion.

FIG. 9 depicts an example of the configuration of a data bridgingapplication according to the invention, in which the properties of aregister are defined. FIG. 9 shows an interactive display 550 thatappears upon selection of the Add item of the heading Register ofmenubar 402 of DataWorX32 user screen 400. In FIG. 9, the Properties tab560 has been selected. The user can then enter an alphanumericexpression as the Register name in box 561. The user can elect to checkthe box 562 labeled “Make available to OPC clients” which if check willmake the register named available to OPC clients. Checking box 563 willmake the register available to Visual Basic for Applications (“VBA”)Applications. VBA is a product of the Microsoft Corporation., so that itwould be susceptible to editing in a VBA Editor. Checking box 564 willmake the register writeable while not checking box 564 will make theregister read-only. Entering an expression in the box 565 will allow theregister to receive data of a specified type from an input. Theacceptable types of data include Float, Double, Boolean, Byte, Word,Dword, Character, Short, Long and String, all of which are well known inthe computer programming art, and all of which are available as adropdown list activated by using a pointing device to activate the downarrowhead button at the right of box 565. Checking box 566 allows theuse of manual range selection by entry of values in boxes 567 and 568 todenote low and high ranges, respectively.

Once the user has completed entering information that is correct, theentry can be completed by activating the button 569 a labeled OK.Alternatively, the user can remove all the entries by activating thebutton 569 b labeled Cancel, and can then renter information.Alternatively, the user can edit any individual entry at any time. Ifthe user is not sure what to do, or what an entry represents, the usercan activate the button 569 c labeled Help, and a dialog box of on-lineinformation will appear.

FIG. 10 depicts an example of the configuration of input parameters in adata bridging application according to the invention. FIG. 10 shows anembodiment comprising an interactive display 550, known to those ofordinary skill in the art as a dialog box, through which the userprovides the DataWorX32 program information about an input connected toa register. The user first selects the Input tab 570 that activates thedialog box shown. The elements of the dialog box that the user cancontrol include radio button 571 labeled OPC Item, which if activateddeclares the input to be an OPC item. The Input name is entered in box572 as a tag name comprising alphanumeric symbols. The user defines ascan rate in milliseconds by entering a numeric value in box 573. Thescan rate is the repeat period that the register polls the input for newinformation. When activated, the Browse button 574 causes the OPCUniversal Tag Browser to appear. The OPC Universal Tag Browser isdiscussed below and depicted in FIG. 12.

The user can enter a register name in box 575 upon activation of radiobutton 576, labeled Register. If the Register radio button 576 isactive, a drop-down list of all the register names defined in DataWorX32can be displayed for the convenience of the user upon activation of thebutton marked with a down arrowhead. Activation of Radio button 577,labeled Expression, allows the entry of an expression in the box 578. IfRadio button 577 is activated, the button labeled Edit 57 activates anEdit Expression dialog box, which permits an expression to be edited.Activation of radio button 577 also activates scan rate entry box 580that behaves as discussed earlier with regard to box 573.

The user can also activate Radio button 581, labeled None, thatindicates to the DataWorX32 program that the selected register has noinputs. In this case the register may have a defined initial value, ifthe user activates check box 582 and enters a value in box 583. An OPCclient may also write to a register that has no defined input. The userfinishes entering data by activating the button 569 a labeled OK, orcancels an entry in its entirety by activating the button 569 b labeledCancel. If the user needs help, he or she can activate the button 569 clabeled Help at any time.

FIG. 11 depicts an example of the configuration of an output in a databridging application, according to the invention. FIG. 11 shows anembodiment comprising an interactive display 550, also known as a dialogbox, through which the user provides the DataWorX32 program informationabout one or more outputs that are connected to a register. The userselects the tab 583 labeled Outputs to activate this dialog box 550. Aname of an OPC Tag or a Register 584 is displayed in the dialog box 550.The name is designated as either an OPC Register or a Tag by the entryin the column headed Type. If the user activates the button 585 labeledAdd OPC Tag, the OPC Tag Browser is displayed. The OPC Tag Browser isdiscussed below and depicted in FIG. 12. The user can activate thebutton 586 labeled Add Register activates the Select Register dialogbox. The Select Register dialog box is discussed below and is depictedin FIG. 13. The Select Register dialog box allows the user to add aRegister to the list of Registers that take values as outputs from theRegister that is being configured. The button 587 labeled Remove allowsthe user to remove an output from the list of outputs. The user finishesentering data by activating the button 569 a labeled OK, or cancels anentry in its entirety by activating the button 569 b labeled Cancel. Ifthe user needs help, he or she can activate the button 569 c labeledHelp at any time.

FIG. 12 depicts an embodiment of the present invention, in which a listof tags may be examined. FIG. 12 shows an embodiment comprising aninteractive display called the OPC Tag Browser 590, also known as adialog box, through which the user communicates with the DataWorX32program to review information about one or more OPC Tags. In the leftpane 591 of the OPC Tag Browser 590 there is presented a tree structureshowing the various directories and sub-directories of the computer filesystem, of which a subdirectory names Simulate happens to be selected.The right pane 592 of the OPC Tag Browser 590 shows a list of theavailable Tag names in the selected sub-directory, according to theentry of a filter in box 594. In this instance, the filter 594 is theasterisk, or wildcard, that allows the display of any entry that ispresent. The identifier of the Tag is displayed in the box 595 labeledItem Id. The OPC Tag Browser 590 allows the user to find and select anyof the Tags available in the system. Upon completing the selectionprocess, the user can activate the button 596 a labeled OK, or cancancel the selection by activating the button 596 b labeled Cancel. Theuser can obtain a current list of OPC Tags by activating the Refreshbutton 596 c.

FIG. 13 depicts an embodiment of the present invention, in which a listof registers may be examined. FIG. 13 shows an embodiment comprising aninteractive display called Select Register 600, which is a dialog box,through which the user communicates with the DataWorX32 program toreview and/or modify information about one or more Registers, Aliases,and redundant servers. The Select Register dialog box 600 has a singlepane that lists all of the Registers, Aliases, and redundant serversthat are defined in the DataWorX32 program. To edit a Register, oneselects a displayed Register name and activates the Edit option of theRegisters menu of the DataWorX32 user screen 400. One then modifies theentries under the Properties, Input and Output Tabs discussed above, andaccepts the modified entries.

FIG. 14 depicts an example of the configuration of a redundancyapplication according to the invention, in which a primary controllingmachine and a plurality of secondary controlling machines are beingenumerated. FIG. 14 shows an embodiment comprising an interactivedisplay 700 called the Redundant Server Configuration. In the pane 701labeled Primary and backup nodes are listed two servers or computers,named PC17 and PC14. One computer must be the primary controllingmachine, which in the present example is PC17, identified as “(primarynode).” One or more computers can be designated as secondary controllingmachines, or redundant or “Backup” servers. If more than one secondarycontrolling machine is specified, the machines must be specified in anorder that each will be called upon if the primary controlling machineis unavailable. The DataWorX32 program can thus direct the flow ofinstructions and information to a secondary controlling machine if theprimary controlling machine is unavailable, making the operation of thesystem transparent to the computers connected to the network. Thesecondary controlling machines are given control of the network in theorder of their designation in the configuration. The selection ofprimary and secondary controlling machines, or primary and backup nodes,is accomplished in conjunction with the Select Network Node dialog boxdepicted in FIG. 15, which is activated by selecting the Add button 702.

FIG. 15 depicts an embodiment of the present invention in whichcomputers are selected as primary controlling machine and as one or moresecondary controlling machines. In the embodiment shown in FIG. 15,there is a dialog box 720 called the Select Network Node dialog box. Anode can be identified in the Node name box 722. A pane 724 labeledAvailable nodes lists the nodes that the network has as available nodes.The use can highlight a node by using a pointing device, such as amouse, arrow keys on a computer keyboard or by typing in a designator,and accept the selection by activating the button 726 labeled OK. Theuser can also cancel the operation by activating the button 728 labeledCancel.

Returning to FIG. 14, after the user has selected a node, the node willhave been added. A node can be removed by activating the Remove button703. The user can identify a node to the DataWorX32 program byhighlighting the node identifier and activating the Set as Primarybutton 704. The name of the server, or computer, or node, is displayedas the primary node in the pane 701, and its name is displayed in thebox 705 a labeled Server name. Alternatively the user can select theBrowse button 705 b that activates the Select OPC Server dialog boxdiscussed below and depicted in FIG. 16. Some computers may be givencommon names in a network. Such common names can be displayed in theCommon name box 706. The common name enclosed within two sets of squarebrackets can be used as an alias, as in the name “[[bristol]]” asdepicted in FIG. 14.

FIG. 16 depicts an embodiment of the present invention in whichcomputers are identified as servers. FIG. 16 shows a user dialog box 730that is called Select OPC Server. This dialog box lists all theavailable servers in a pane 732, in which the user can highlight a nameof a server using a pointing device, such as a mouse or arrow keys. Uponcompleting the selection, the user can confirm the selection byactivating the OK button 734, or the user can reject the selection byactivating the Cancel button 736.

Returning to FIG. 14, the user can designate whether the primarycontrolling machine is intended to regain control of the network afterit returns to availability by checking the Automatic Switch back toPrimary Server box 707. The user can designate whether a flag will beset when the primary controlling machine is off-line by checking theNode Status register box 708, and can designate a name for the flag inthe dialog box 709. Upon completing the selection process, the user canaccept the selection by activating the OK button 710 a or can reject theselection by activating the Cancel button 710 b. The Redundant ServerConfiguration dialog box 700 can be used to edit a Redundant node byaccessing it via the Edit item under the Redundancy menu of theDataWorX32 user screen 400.

FIG. 17 depicts an embodiment of the present invention in which OPCsettings may be selected. FIG. 17 shows an embodiment comprising an OPCSettings dialog box 740. The OPC Settings dialog box 700 can be accessedby selecting the OPC Setting item under the Tools menu of the DataWorX32user screen 400. This is a sophisticated capability that allows the userto designate some of the parameters of operation of the system accordingto the OPC communication standard.

The OPC Settings dialog box 740 allows the user to set a period inseconds for checking whether the servers or computers are alive. Theuser can enter a numeric value in the box 741 to set this value. Theuser can additionally set a response time in seconds in the box 742,which defines an interval within which a server or computer must respondto be considered alive. The user can additionally set a time period inseconds by making a numeric entry in the box 743 for reattempting togain a response form a computer that has failed to respond, eitherbecause the connection is lost, or because the response appears to becorrupted in some manner. In addition, in order to save communicationbandwidth, a user can activate a checkbox 744 that indicates that aconnection to an unused server should be shut down after a specific timeof disuse, with the time in seconds entered by the user in the box 745,if the user has checked the box 744.

The user can also indicate that certain maintenance functions should beperformed on a desired schedule. The user can designate a time inseconds for cleaning up items by entering a numerical value in the box746. The user can designate a time in seconds for deleting up items byentering a numerical value in the box 747. The user can designate a timein seconds for attempting a reconnection by entering a numerical valuein the box 748.

The user can designate a time in milliseconds for adding or removingrequests by entering a numerical value in the box 749. The user candesignate a time in milliseconds for writing requests by entering anumerical value in the box 750. The user can designate the length of awrite queue by entering a numerical value in the box 751.

Under the OPC specification, servers are supposed to send initial valuesautomatically. If the user checks the Perform initial refresh box 752,the system is forced to make the server send initial values. The usercan make check the Enumerate all items in one call box 753 to require aserver to send all values in a single transmission to improveperformance. However, some servers may not be able to send more than oneitem at a time, and this option may created difficulties with suchservers. The user can select an Access path separator by checking thebox 754 and entering a symbol or string in the box 755.

The user can designate a parameter for identifying a computer in a localgroup by entering a value in the Locale ID box 756. The user can specifya Deadband width in percent by entering a numerical value in percent inthe box 757. The user can return all the parameters described above totheir original settings provided in the software by activating the SetDefaults button 758. The user can cancel any changes in parameters thatmay have been entered by activating the Cancel button 759. The user canaccept his or her changes in the foregoing parameters by activating theOK button 760.

FIG. 18 depicts an embodiment of the present invention in which optionalfeatures are selected. FIG. 18 shows an embodiment comprising an Optionsdialog box 770. The user can activate the Options dialog box 770 byselecting the Options item of the Tool menu of the DataWorX32 userscreen 400. The user can designate whether the most recently run projectfile will be reloaded on starting the DataWorX32 program by checking theReload project on start box 771. The user can require the DataWorX32program to save the then current setting on exit by checking the boxSave settings on exit 772. The user can define an update rate byentering a numerical value that will be interpreted in milliseconds inbox 773. The user can permit the editing of aliases as Registers inConfiguration mode by checking the Allow editing aliases as registersbox 774. The user can accept the feature of allowing the program to goto Runtime when started by the OPC server by checking the box 775.

The user can control features of the browse interface. The user canallow the display of redundant servers in the Redundancy menu bychecking the box 776. The user can allow examine the file system of thelocal computer through DataWorX32 by checking the Browse ‘My Computer’box 777. The user can allow examine the other nodes in the system of thelocal computer through DataWorX32 by checking the Browse ‘NetworkNeighborhood’ box 778.

The user can return the parameters of the Options menu to the originalsettings by activating the Set Defaults button 779. The user can acceptchanges to the options parameters by activating the OK button 780 a orcan reject all of the changes by activating the Cancel button 780 b.

Aliases are more fully discussed and described in conjunction with FIGS.19 through 21. FIG. 19 depicts an embodiment in which the value of analias is changed, according to the invention. To change an alias value,the user selects an alias from the Alias Names column of the Aliaseditor, which is described below and depicted in FIG. 21. The user thenselects the Change Value item under the Aliases menu of the DataWorX32user screen 400. The Change alias value dialog box 800 shown in FIG. 19appears. The name of the selected alias appears in the box 802. The usercan enter a new value for the alias in the Value box 804. If the useractivates the Browse button 806, the OPC Tag Browser described above isactivated, and the user can select a Tag as a value for the alias. Theuser can then accept the new value by activating the OK box 808, or theuser can reject the new value by activating the Cancel box 809.

FIG. 20 depicts an embodiment in which a new alias is created, accordingto the invention. The user can create a new alias. The user can activatethis feature by selecting the Add item of the Alias menu of theDataWorX32 user screen 400. FIG. 20 shows an embodiment of a New aliasdialog box 810. The user can enter a name, which can be a tag name, fora new alias in the box 812. The user can enter a default value for thealias in the box 814. If the user checks the box 816, the new alias willbe available via OPC. The user can make the alias a read-only alias bychecking the box 818. The user can search for tags by activating theBrowse button 820, which will cause the OPC Tag Browser to becomeactive. The user can then accept the parameters entered by activatingthe OK button 822, or can reject the selections made by activating theCancel button 824.

The user can edit an alias. FIG. 21 depicts an embodiment in which analias is edited, according to the invention. FIG. 21 shows an embodimentcomprising an Edit alias dialog box 830. The user can activate thisdialog box 830 by selecting an alias name in the upper pane ofDataWorX32 user screen 400, and then selecting the Edit alias item underthe Aliases menu of the DataWorX32 user screen 400. The user can enteran alias name in the box 832, or the user can locate an alias name byactivating the browse button 834 to display the OPC Tag Browser. Theuser can also enter a default value in the box 836. If the user checksthe box 838, the new alias will be available via OPC. The user can makethe alias a read-only alias by checking the box 840. The user can thenaccept the parameters entered by activating the OK button 842, or canreject the selections made by activating the Cancel button 844.

Once the system has been configured, which in one embodiment isaccomplished by configuring the DataWorX32 program, the system is readyfor operation. In order to operate the system, it is necessary to issuean appropriate command for the software to begin operation. In theembodiment presently under discussion, the user can select the commandStart DataWorX32 that appears under the Action menu of the DataWorX32user screen 400. Once the DataWorX32 program has started to run, theRuntime Screen 900 shown in FIG. 22 appears. FIG. 22 depicts anembodiment of the screen that provides information about the systemduring its operation, according to the invention. Comparison of thisRuntime screen 900 with the DataWorX32 user screen 400 shows that thereare several fewer entries in the Runtime screen menubar 902 and severalfewer icons in the Runtime screen 900 toolbar 904 as compared to theDataWorX32 user screen 400 menubar 402 and toolbar 404. In particular,the menu entries Register, Redundancy, and Tools are not present in theRuntime screen 900 menubar 902. The entry Security is present in theRuntime menubar 902, and such an entry is absent from the DataWorX32user screen 400 menubar 402. The upper pane 906 of the Runtime screen900 is shown in FIG. 22, while the lower pane is not shown. The upperpane 906 of the Runtime screen 900 displays live data for the variousRegisters, Aliases and Redundant servers or controlling machines. Thelower pane that is not shown displays various status messages thatdescribe the status of the DataWorX32 program. In the presentembodiment, the Security menu provides options for the user to define asecurity configuration in Runtime, so that certain nodes can bedesignated as accessible only by certain individuals and/or undercertain conditions. There are many well known reasons for providingsecurity both with respect to who may access a system and which nodes ofa system may be amenable to access. As examples, one may wish to denyaccess to all but specified persons if the system under control posesthe possibility of reaching dangerous conditions, or containsproprietary information. One may wish to control access to certainmachines that are very sensitive to operating parameters, so that anoperator who does not have the requisite knowledge or experience cannotupset the operating conditions by entering erroneous control parameters.One may wish to limit human interaction with control parameters that arenumerous, and that vary rapidly in time, because a human cannot controlso many variables in such a short time period with any expectation ofaccuracy. Many other good reasons to limit access to the entry points inan industrial control system will be apparent to one of ordinary skillin the art. The present invention provides for such limitations onaccess to the control system that can be invoked by a user withsufficient authority.

Variations, modifications, and other implementations of what isdescribed herein will occur to those of ordinary skill in the artwithout departing from the spirit and the scope of the invention asclaimed. Accordingly, the invention is to be defined not by thepreceding illustrative description but instead by the spirit and scopeof the following claims.

1-20. (Cancelled).
 21. A computer program recorded on acomputer-readable medium, said computer program comprising: a modulethat: (a) aggregates all requests for the same information directed toone of a plurality of interconnected computers, the one computercommunicating with at least one piece of process control equipment, therequests transmitted according to a standard communication protocol; (b)communicates with the one computer according to the standardcommunication protocol and obtains the information; and (c) delivers,according to the standard communication protocol, the requestedinformation.
 22. The computer program of claim 21 wherein the standardcommunication protocol is Object Linking and Embedding for ProcessControl (“OPC”).
 23. The computer program of claim 21 wherein therequested information comprises a process control parameter.
 24. Thecomputer program of claim 21 wherein all requests for informationoriginate from one computer.
 25. A method of delivering information,comprising: a) aggregating all requests for the same informationdirected to one of a plurality of interconnected computers, the onecomputer communicating with at least one piece of process controlequipment, the requests transmitted according to a standardcommunication protocol; b) communicating with the one computer accordingto the standard communication protocol and obtaining the information;and c) delivering, according to the standard communication protocol, therequested information.
 26. The method of claim 25 wherein the standardcommunication protocol is Object Linking and Embedding for ProcessControl (“OPC”).
 27. The method of claim 25 wherein the requestedinformation comprises a process control parameter.
 28. The method ofclaim 25 wherein all requests for information originate from onecomputer.
 29. A system for delivering information, comprising: a) meansfor aggregating all requests for the same information directed to one ofa plurality of interconnected computers, the one computer communicatingwith at least one piece of process control equipment, the requesttransmitted according to a standard communication protocol; b) means forcommunicating with the one computer according to a standardcommunication protocol and obtaining the information; and c) means fordelivering, according to the standard communication protocol, therequested information.
 30. The system of claim 29 wherein the standardcommunication protocol is Object Linking and Embedding for ProcessControl (“OPC”).
 31. The system of claim 29 wherein the requestedinformation comprises a process control parameter.
 32. The system ofclaim 29 wherein all requests for information originate from onecomputer.